home *** CD-ROM | disk | FTP | other *** search
/ SPACE 1 / SPACE - Library 1 - Volume 1.iso / program / 363 / tprolog1 / family < prev    next >
Text File  |  1990-02-03  |  3KB  |  121 lines

  1.  
  2. % Demonstration für TOY Prolog
  3.  
  4. % Verwandtschaftsbeziehungen
  5.  
  6. % (c) 1986 JJK
  7.  
  8. %%% Zuerst ein paar Regeln über die Verwandtschaftsbeziehungen :
  9.  
  10. mann(X) :- vater(X, _).
  11. frau(X) :- mutter(X, _).
  12.  
  13. bruder(X, Y) :- mann(X), vater(F, X), vater(F, Y).
  14. bruder(X, Y) :- mann(X), mutter(M, X), mutter(M, Y).
  15.  
  16. schwester(X, Y) :- frau(X), vater(F, X), vater(F, Y).
  17. schwester(X, Y) :- frau(X), mutter(M, X), mutter(M, Y).
  18.  
  19. kind(X, Y) :- vater(Y, X) ; mutter(Y, X).
  20.  
  21. elter(X, Y) :- vater(X, Y) ; mutter(X, Y).
  22.  
  23. großmutter(X, Y) :- mutter(X, E), elter(E, Y).
  24. großvater(X, Y) :- vater(X, E), elter(E, Y).
  25.  
  26. onkel(X, Y) :- bruder(X, E), elter(E, Y).
  27. tante(X, Y) :- schwester(X, E), elter(E, Y).
  28.  
  29. vorfahr(X, Y) :- elter(X, Y).
  30. vorfahr(X, Y) :- kind(Y, E), vorfahr(X, E).
  31.  
  32. nachkomme(X, Y) :- kind(X, Y).
  33. nachkomme(X, Y) :- elter(E, X), nachkomme(E, Y).
  34.  
  35.  
  36. %%% Jetzt ein paar Fakten :
  37.  
  38. mann(otto). % Otto hat keine Kinder
  39.  
  40. frau(anna). % Anna auch nicht
  41.  
  42. vater(egon, vera).
  43. mutter(ute, vera).
  44.  
  45. vater(willibald, hugo).
  46. mutter(helga, hugo).
  47.  
  48. vater(hugo, otto).     vater(hugo, anna).
  49. mutter(vera, otto).    mutter(vera, anna).
  50.  
  51. % Und ein paar Anfragen dazu :
  52.  
  53. :- nl, großvater(X, otto), display(X), nl, fail.
  54. :- nl, großmutter(X, anna), display(X), nl, fail.
  55. :- nl, schwester(X, otto), display(X), nl, fail.
  56. :- nl, vorfahr(X, otto), display(X), nl, fail.
  57.  
  58. %%% Jetzt viele, viele Fakten :
  59.  
  60. % Quelle : Mt 1, 1-16
  61.  
  62. vater(abraham, isaak).
  63. vater(isaak, jakob).
  64. vater(jakob, juda).  % und dessen Brüder ...
  65. vater(juda, perez).
  66. vater(juda, serach).
  67. mutter(tamar, perez).
  68. mutter(tamar, serach).
  69. vater(perez, hezron).
  70. vater(hezron, ram).
  71. vater(ram, amminadab).
  72. vater(amminadab, nachschon).
  73. vater(nachschon, salmon).
  74. vater(salmon, boas).
  75. mutter(rahab, boas).
  76. vater(boas, obed).
  77. mutter(rut, obed).
  78. vater(obed, isai).
  79. vater(isai, david).   % der KÖNIG David !
  80. vater(david, salomo). % , dessen Mutter die Frau des Urija war.
  81. vater(salomo, rehabeam).
  82. vater(rehabeam, abija).
  83. vater(abija, asa).
  84. vater(asa, joschafat).
  85. vater(joschafat, joram).
  86. vater(joram, usija).
  87. vater(usija, jotam).
  88. vater(jotam, ahas).
  89. vater(ahas, hiskija).
  90. vater(hiskija, manasse).
  91. vater(manasse, amon).
  92. vater(amon, joschija).
  93. vater(joschija, jojachin). % und dessen Brüder, zur Zeit der babylonischen
  94.                            % Gefangenschaft.
  95. vater(jojachin, schealtiel). % nach der babylonischen Gefangenschaft.
  96. vater(schealtiel, serubbabel).
  97. vater(serubbabel, abihud).
  98. vater(abihud, eljakim).
  99. vater(eljakim, azor).
  100. vater(azor, zadok).
  101. vater(zadok, achim).
  102. vater(achim, eliud).
  103. vater(eliud, eleasar).
  104. vater(eleasar, mattan).
  105. vater(mattan, jakob_).  % das war ein anderer Jakob als der obige ...
  106. vater(jakob_, josef).
  107.  
  108. ehemann(josef, maria).
  109. mutter(maria, jesus).
  110.  
  111. % noch eine Regel für Josef :
  112.  
  113. vater(X, Y) :- ehemann(X, M), mutter(M, Y).
  114.  
  115. % Und jetzt eine Anfrage :
  116.  
  117. :- nl, vorfahr(X, jesus), display(X), nl, fail.
  118.  
  119. end.
  120.  
  121.